精选分类

文章列表

11k10 分钟

注:本节可参考国内《信息安全数学基础》《初等数论》《抽象代数》等相关内容(即如果学习过以上课程,下面内容可以跳过)。 # 模运算(Modular Arithmetic) 在计算机的一些领域(如密码学),我们通常希望处理一串范围较小的数字。这时,模运算就起到了巨大的作用,它能将数压缩到一个较小的范围{0,1,⋯ ,N−1}\{0,1,\cdots,N-1\}{0,1,⋯,N−1},从而简化大量运算。 在生活中,最常见的模运算例子就是时钟。时钟以12小时为一循环(如果以24小时制计算则为24小时一循环),因而我们能够轻松计算当前时刻若干小时后的时刻。 用数学语言描述的话,我们可以定义x(mod⁡m
4.3k4 分钟

# 定义与使用类(Defining and Using Classes) # 静态方法(static methods) 如前面所述,java语言中所有代码都必须放在类(class)中,而大部分代码都放在方法(method)中(可以理解为可执行一系列操作的函数)。而为了运行这些方法,我们需要对其进行调用。 以下面这个Dog程序为例: public class Dog { public static void makeNoise() { System.out.println("Bark!"); } } 单独编译这段代码没有问题,但运行这段代
4k4 分钟

# 递归函数(Recursion function) 如果一个函数直接或间接调用了自身,那么它就被称作递归函数。一种常见的形式是,在函数体中调用函数自身的功能。 下面以求自然数所有位数的和作为例子: 递归的核心理念在于简化问题(即“分而治之”的思想)。在将自然数分解的过程中,会频繁用到取模(n%10)和整除(n//10)操作,而求解n//10的所有位数和的方法和n是完全一致的。于是就可以用递归函数实现上述操作: >>> def sum_digits(n): """返回正整数n的所有位数之
25k22 分钟

# 深度学习的历史发展 1943年,神经科学家Warren McCulloch和逻辑学家Walter Pitts合作提出了“McCulloch-Pitts (MCP) neuron”的思想。MCP可对输入信号进行线性加权组合,再用符号函数来输出组合结果。MCP是最早的神经网络雏形。 1949年,心理学家唐纳德·赫布(Donald Hebb)提出了著名的赫布理论(Hebbian theory)。指出“神经元之间持续重复经验刺激可导致突触传递效能增加”,“神经元之间突触的强弱变化是学习与记忆的生理学基础”。这一理论为联结主义人工智能研究提供了认知神经心理学基础。 1958年,David Hube
17k15 分钟

# K均值(K-means)聚类 输入:nnn个数据(无任何标注信息) 输出:kkk个聚类结果 目的:将nnn个数据聚类到kkk个集合(也称为类簇) 应用:可用于图像分类、文本分类等 # 定义与算法描述 nnn个mmm维数据{x1,x2,…,xn},xi∈Rm(1≤i≤n)\{\mathrm{x}_1, \mathrm{x}_2, … , \mathrm{x}_n\},\mathrm{x}_i\in\mathbb{R}^m(1\leq i \leq n){x1​,x2​,…,xn​},xi​∈Rm(1≤i≤n) 两个mmm维数据之间的欧氏距离为d(xi,xj)=(xi1−xj1)2
12k11 分钟

# Introduction of Graph Theory 从本节开始,我们将讨论图论中的一些知识。在开始之前,首先明确:图论在计算机科学中有什么用? 图(Graphs)适合用于将大数据(big data)及之间的关系抽象化(abstraction,即使用一个简单的模型提取复杂情况的本质) 图论对于进一步理解并应用归纳法有很大的作用。 在现实生活中,很多地方都存在图(当存在大量关系时也被称为网络network),比如互联网,地图,大脑的神经元网络,社交网络等…… 图论可以解决许多问题:网页搜索推荐(Pagerank),染色问题,排线问题等。 目前公认的图论起源是1736年欧拉关于哥尼
3.4k3 分钟

本系列笔记基于官网发布的slides,videos,textbook以及B站Lecture视频编写。 CS61B官网(2025 Fall):CS 61B Fall 2025 CS61B Lecture(2024 Spring):CS61B Lecture sp24 注:本课程使用的编程语言为Java,但是否熟悉这个语言对学习此课程影响不大。(个人认为它相当于C++去掉C) 关于Java的安装配置,可参考:Java开发环境配置教程。如果你和我一样使用的是vscode,并且电脑上已经安装了java版minecraft,那么只需要在vscode中安装对应的java插件就行() 但为了更好理解本课程,
7.7k7 分钟

# Higher-Order Functions(高阶函数) 之前我们已经了解到,函数通过接收以表达式为形式的参数,输出表达式(值)。而高阶函数则是将表达式改为函数,即接收函数形式的参数,或者输出形式为函数。 这种高阶函数具有以下特点:模块化(Modularity),抽象化(Abstraction)以及关注点分离(Separation of Concerns)。 # 函数作为参数 有时我们在设计多个函数时,这些函数之间可能会高度相似,只有微小的部分存在区别,比如: from math import pi, sqrt def area_square(r): ""
9.1k8 分钟

注:强烈建议看完SQL入门笔记后再阅读此笔记! # JOINs and UNIONs 在入门笔记中,我们使用了INNER JOIN合并两个表格。这一节我们会使用更多的JOIN语句,以及使用UNIONs获取多个表格的信息。 这里我们使用以下表格作为示例(若无特别说明,以下图片均源自Kaggle教程): 和入门笔记中使用的表格略有不同,我们在两个表格中各自设置了一个无匹配对象的数据。 # JOINs 对于上面的表格,如果使用INNER JOIN就只会保留两个表格的前4条数据。代码如下: query=""" SELECT p.Name A
14k12 分钟

教程链接:https://www.kaggle.com/learn/intro-to-sql 注:本教程使用python语言执行sql语句的相关操作,数据均源于Google BigQuery。 Google BigQuery官方文档:https://cloud.google.com/python/docs/reference/bigquery/latest/index.html Kaggle上收录的Google BigQuery数据集:https://ww